<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Views : CodeIgniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='CodeIgniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>CodeIgniter User Guide Version 2.1.0</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Views
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">

<h1>뷰Views</h1>

<p>간단히 말하면 <dfn>뷰</dfn> 는 웹페이지이거나 헤더 푸터같은 웹페이지 조각입니다. 사실,뷰는 유연하게 다른 뷰에 삽입될수 있습니다.</p>

<p>뷰는 절대로 직접 호출되지않고 ,<a href="controllers.html">컨트롤러</a>를 통해서 호출됩니다. MVC 패턴에서 컨트롤러는 교통경찰같은 역할을 하며 어떤 뷰가 보여져야할지를 결정하는 책임 있다는것을 명심하세요 .만약<a href="controllers.html"> 컨트롤러</a> 페이지를 아직 읽지않으셨으면 반드시 먼저 읽어주세요 . </p>

<p><a href="controllers.html">컨트롤러</a> 페이지에서 작성한 컨트롤러에 뷰를 추가해봅시다.</p>

<h2>뷰 만들기</h2>

<p><dfn>blogview.php</dfn> 라는 파일을 만든후 아래의 코드를 입력하세요.:</p>

<textarea class="textarea" style="width:100%" cols="50" rows="10">
&lt;html>
&lt;head>
&lt;title>My Blog&lt;/title>
&lt;/head>
&lt;body>
	&lt;h1>Welcome to my Blog!&lt;/h1>
&lt;/body>
&lt;/html>
</textarea>

<p>그리고 <dfn>application/views/</dfn> 폴더안에 저장하세요.</p>

<h2>뷰 로딩하기</h2>

<p>특정 뷰 파일을 로드하기위해서 아래와 같은 코드를 사용합니다:</p>

<code>$this->load->view('<var>name</var>');</code>

<p><var>name</var> 은 뷰 파일의 이름을 넣어주시면 됩니다.  Note:  .php 확장자는 넣지 마세요.</p>


<p>이전에 만들었던 <dfn>blog.php</dfn> 컨트롤러를 여신후 echo 문장대신 View를 로드하도록 합니다:</p>


<textarea class="textarea" style="width:100%" cols="50" rows="10">
&lt;?php
class Blog extends CI_Controller {

	function index()
	{
		$this->load->view('blogview');
	}
}
?&gt;
</textarea>


<p>아래처럼 url 로 접속해 보면 echo 문으로 찍은 글 대신 새로 작성한 뷰를 보실수 있습니다:</p>

<code>example.com/index.php/<var>blog</var>/</code>

<h2>여러개의 뷰를 로드하기</h2>
<p>CodeIgniter 는 컨트롤러에서 뷰를 로드($this-&gt;load-&gt;view)할때 지능적으로 동작합니다 from within a controller.  만약 2개이상을 로드하면 하나씩 덧붙여서(append) 출력합니다.예를들어  header view, a menu view, a content view, and a footer view 를 출력하고싶다면 아래와 같이 로드하시면 됩니다:</p>
<p><code>&lt;?php<br />
<br />
class Page extends CI_Controller {<br /><br />

 &nbsp;&nbsp;&nbsp;function index()<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['page_title'] =  'Your title';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('header');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('menu');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('content', $data);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('footer');<br />
&nbsp;&nbsp;&nbsp;}<br />
<br />
}<br />
	?&gt;</code></p>
<p>위 예제같은 경우 우리는 아래에 소개하는 동적데이터추가 라는 방법을 쓸것입니다..</p>
<h2>뷰를 하위폴더에 저장하기</h2>
<p>뷰는 서브폴더에 저장될수 있습니다..이럴경우 뷰를 로드할때 폴더이름을 같이 적어주시면됩니다.</p>
<p>예제:</p>
<code>$this->load->view('<kbd>folder_name</kbd>/<var>file_name</var>');</code>


<h2>뷰에 동적으로 데이터 추가하기</h2>

<p>뷰를 로드할때  배열이나 객체를 두번째 파라미터로 전달할 수 있습니다.</p>
<p>배열을 사용하는 예제:</p>
<code>$data = array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => 'My Title',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'heading' => 'My Heading',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'message' => 'My Message'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
$this->load->view('blogview', <var>$data</var>);</code>

<p>객체를 사용하는 예제:</p>

<code>$data = new Someclass();<br />
$this->load->view('blogview', <var>$data</var>);</code>

<p>Note: 객체를 사용할때는 클래스의 변수가 배열의 요소로 변환됩니다.</p>


<p>위에서만든 컨트롤러를 이용하여 한번 해봅시다:</p>

<textarea class="textarea" style="width:100%" cols="50" rows="14">
&lt;?php
class Blog extends CI_Controller {

	function index()
	{
		$data['title'] = "My Real Title";
		$data['heading'] = "My Real Heading";
		
		$this->load->view('blogview', $data);
	}
}
?&gt;
</textarea>


<p>뷰 파일을 열어서 텍스트를 넘겨준 배열의 key이름과 같은 변수로 바꾸어봅시다.:</p>


<textarea class="textarea" style="width:100%" cols="50" rows="10">
&lt;html>
&lt;head>
&lt;title>&lt;?php echo $title;?&gt;&lt;/title>
&lt;/head>
&lt;body>
	&lt;h1>&lt;?php echo $heading;?&gt;&lt;/h1>
&lt;/body>
&lt;/html>
</textarea>

<p>그리고 URL로 접속해보면 변수값으로 바뀌어있는것을 확인할 수 있습니다.</p>

<h2>루프작성</h2>

<p>뷰에 넘겨주는 데이터는 단순한 변수로 제한되어있지 않습니다.  배열안의 값으로 다른 배열을 넣어서 전달할수 있으며, 넘겨받은 배열을가지고 루프를 이용하여 여러줄의 데이터를 표시할수 있습니다.  예를 들어 데이터베이스에서 데이터를 가져온다면 일반적으로 그 값을 다차원배열에 넣어 뷰로 전달하게 됩니다.</p>

<p>다음 예제를 여러분의 컨트롤러에 추가하세요:</p>

<textarea class="textarea" style="width:100%" cols="50" rows="17">
&lt;?php
class Blog extends CI_Controller {

	function index()
	{
		$data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');

		$data['title'] = "My Real Title";
		$data['heading'] = "My Real Heading";
		
		$this->load->view('blogview', $data);
	}
}
?&gt;
</textarea>


<p>그다음 뷰파일을 열어 루프를 작성합니다:</p>


<textarea class="textarea" style="width:100%" cols="50" rows="24">
&lt;html>
&lt;head>
&lt;title>&lt;?php echo $title;?&gt;&lt;/title>
&lt;/head>
&lt;body>
&lt;h1>&lt;?php echo $heading;?&gt;&lt;/h1>
	
&lt;h3>My Todo List&lt;/h3>	

&lt;ul>
&lt;?php foreach($todo_list as $item):?&gt;

&lt;li>&lt;?php echo $item;?&gt;&lt;/li>

&lt;?php endforeach;?&gt;
&lt;/ul>
	
&lt;/body>
&lt;/html>
</textarea>
<p><strong>Note:</strong> 위 예에서 우리가 PHP 대체문법을 이용하고 있다는걸 알수 있을것입니다. 이에대해 더 자세한 정보는<a href="alternative_php.html">여기 를 참조해주세요 </a>.</p>

<h2>뷰를 데이터처럼 리턴받기(Returning views as data)</h2>

<p>세번째 파라미터(옵션) 를 사용하면 뷰를 브라우저로 전송하는대신 데이터로써 리턴하게됩니다. 뷰를 데이터로 처리해야할경우 유용하겠죠 . 아래와같이 3번째 파라미터를 <kbd>true</kbd> (boolean)로 설정하면 됩니다.기본값은 <kbd>false</kbd> 이며 이때 는 데이터를 브라우저로 전송하게 됩니다. 데이터로 리턴받을때는 변수에 할당해야한다는걸 잊지마세요 .:</p>
<code>$string = $this->load->view('<var>myfile</var>', '', <kbd>true</kbd>);</code>

</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="reserved_names.html">Reserved Names</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="models.html">Models</a>
</p>
<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 - 2011 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>

</body>
</html>